#include "stdafx.h"
#include "C_Texture.h"
#include "C_Sprite.h"

C_TextureManager* C_Texture::m_TextureMngr = NULL;


/////////////////////////////////////////////////////////////////////////////
//	CONSTRUCTOR
/////////////////////////////////////////////////////////////////////////////
C_Texture::C_Texture()
{
	m_index		= 0;
	m_bounds	= 0;
}

/////////////////////////////////////////////////////////////////////////////
//	DESTRUCTOR
/////////////////////////////////////////////////////////////////////////////
C_Texture::~C_Texture()
{
}

/////////////////////////////////////////////////////////////////////////////
//	LOAD FROM FILE
/////////////////////////////////////////////////////////////////////////////
void C_Texture::loadFromFile(std::string filename)
{
	EX_R(!m_texture.loadFromFile(filename), "Cannot load texture " + filename + "!\n")
	EX_R(!m_TextureMngr->push(this), "Cannot add texture to manager!")
	m_filename = filename;
}

/////////////////////////////////////////////////////////////////////////////
//	BIND
/////////////////////////////////////////////////////////////////////////////
void C_Texture::bind(C_Sprite *s)	
{
	m_bounds++; 
	s->setTexture(&m_texture); 
}

/////////////////////////////////////////////////////////////////////////////
//	UNBIND
/////////////////////////////////////////////////////////////////////////////
void C_Texture::unbind()
{
	m_bounds--; 
	if (m_bounds == 0)
	{
		m_TextureMngr->remove(m_index);
	}
}
